/************************************************************
** Archivo:		BodaView
** Autor:		
** Fecha:		16/05/2009 19:19:01
** Descripción:	Clase generada automáticamente
** Cliente:		SC
** Proyecto:	eWedding
************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

using Circo.Framework.BusinessLogic;
using Circo.Framework.Persistencia;

using SC.eWedding.Data.Entities;


namespace SC.eWedding.BusinessLogic.Views
{
    public partial class BodaView : AbstractView
    {
    
        #region Private Vars

		private BodaEntity _boda;

        #endregion

        #region Constructors

		
		public BodaView()
		{
			CrearVista(false);
		}

		public BodaView(bool createRelatedViews)
		{
			CrearVista(createRelatedViews);
		}

		private void CrearVista(bool createRelatedViews)
		{
			this._boda = new BodaEntity();

			if (createRelatedViews)

			{

			}

		}

		public BodaView(BodaEntity unaEntidad)
		{
			if (unaEntidad != null)
				this._boda = unaEntidad;

		}



        #endregion
        
        #region Attributes

		
		public int Id
		{
			get { return this._boda.Id; }
			set { this._boda.Id = value; }
		}

		public DateTime Fecha
		{
			get { return this._boda.Fecha; }
			set { this._boda.Fecha = value; }
		}


private List<ContratacionView> _contrataciones;
		public List<ContratacionView> Contrataciones
		{
			get
			{
				if (_contrataciones == null)
				{
					List<ContratacionEntity> listaEntidades = this._boda.Contrataciones;

					this._contrataciones = new List<ContratacionView>();

					foreach (ContratacionEntity unaEntidad in listaEntidades)

						this._contrataciones.Add(new ContratacionView(unaEntidad));

				}
				return _contrataciones;
			}
			set
			{
				this._contrataciones = value;
				if (value != null)
				{
					List<ContratacionEntity> listaEntidades = new List<ContratacionEntity>();

					foreach (ContratacionView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Contrataciones = listaEntidades;

				}
				else
				{
					this._boda.Contrataciones = null;

				}
			}
		}


private List<ConsultaView> _consultas;
		public List<ConsultaView> Consultas
		{
			get
			{
				if (_consultas == null)
				{
					List<ConsultaEntity> listaEntidades = this._boda.Consultas;

					this._consultas = new List<ConsultaView>();

					foreach (ConsultaEntity unaEntidad in listaEntidades)

						this._consultas.Add(new ConsultaView(unaEntidad));

				}
				return _consultas;
			}
			set
			{
				this._consultas = value;
				if (value != null)
				{
					List<ConsultaEntity> listaEntidades = new List<ConsultaEntity>();

					foreach (ConsultaView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Consultas = listaEntidades;

				}
				else
				{
					this._boda.Consultas = null;

				}
			}
		}


private List<ActividadView> _actividades;
		public List<ActividadView> Actividades
		{
			get
			{
				if (_actividades == null)
				{
					List<ActividadEntity> listaEntidades = this._boda.Actividades;

					this._actividades = new List<ActividadView>();

					foreach (ActividadEntity unaEntidad in listaEntidades)

						this._actividades.Add(new ActividadView(unaEntidad));

				}
				return _actividades;
			}
			set
			{
				this._actividades = value;
				if (value != null)
				{
					List<ActividadEntity> listaEntidades = new List<ActividadEntity>();

					foreach (ActividadView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Actividades = listaEntidades;

				}
				else
				{
					this._boda.Actividades = null;

				}
			}
		}


private List<UsuarioBodaView> _usuarios;
		public List<UsuarioBodaView> Usuarios
		{
			get
			{
				if (_usuarios == null)
				{
					List<UsuarioBodaEntity> listaEntidades = this._boda.Usuarios;

					this._usuarios = new List<UsuarioBodaView>();

					foreach (UsuarioBodaEntity unaEntidad in listaEntidades)

						this._usuarios.Add(new UsuarioBodaView(unaEntidad));

				}
				return _usuarios;
			}
			set
			{
				this._usuarios = value;
				if (value != null)
				{
					List<UsuarioBodaEntity> listaEntidades = new List<UsuarioBodaEntity>();

					foreach (UsuarioBodaView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Usuarios = listaEntidades;

				}
				else
				{
					this._boda.Usuarios = null;

				}
			}
		}


private List<InvitadoView> _invitados;
		public List<InvitadoView> Invitados
		{
			get
			{
				if (_invitados == null)
				{
					List<InvitadoEntity> listaEntidades = this._boda.Invitados;

					this._invitados = new List<InvitadoView>();

					foreach (InvitadoEntity unaEntidad in listaEntidades)

						this._invitados.Add(new InvitadoView(unaEntidad));

				}
				return _invitados;
			}
			set
			{
				this._invitados = value;
				if (value != null)
				{
					List<InvitadoEntity> listaEntidades = new List<InvitadoEntity>();

					foreach (InvitadoView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Invitados = listaEntidades;

				}
				else
				{
					this._boda.Invitados = null;

				}
			}
		}


private List<FotoBodaView> _fotos;
		public List<FotoBodaView> Fotos
		{
			get
			{
				if (_fotos == null)
				{
					List<FotoBodaEntity> listaEntidades = this._boda.Fotos;

					this._fotos = new List<FotoBodaView>();

					foreach (FotoBodaEntity unaEntidad in listaEntidades)

						this._fotos.Add(new FotoBodaView(unaEntidad));

				}
				return _fotos;
			}
			set
			{
				this._fotos = value;
				if (value != null)
				{
					List<FotoBodaEntity> listaEntidades = new List<FotoBodaEntity>();

					foreach (FotoBodaView unaView in value)

						listaEntidades.Add(unaView.MapToEntity());

					this._boda.Fotos = listaEntidades;

				}
				else
				{
					this._boda.Fotos = null;

				}
			}
		}


        #endregion

        #region Mapping

		
		public BodaEntity MapToEntity()
		{
			return this._boda;
		}

		public override Entity MapToBaseEntity()
		{
			return MapToEntity();
		}



        #endregion

        #region CollectionSyncro

		public override void SynchronizeCollections()
		{
			//search for deleted items
			for (int i = 0; i < this._boda.Contrataciones.Count; i++)
			{
				ContratacionEntity anEntity = this._boda.Contrataciones[i];
				bool found = false;

				foreach (ContratacionView aView in this.Contrataciones)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Contrataciones.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Contrataciones.Count; i++)
			{
				ContratacionView aView = this.Contrataciones[i];

				if (aView.Id == 0)
					this._boda.Contrataciones.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._boda.Consultas.Count; i++)
			{
				ConsultaEntity anEntity = this._boda.Consultas[i];
				bool found = false;

				foreach (ConsultaView aView in this.Consultas)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Consultas.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Consultas.Count; i++)
			{
				ConsultaView aView = this.Consultas[i];

				if (aView.Id == 0)
					this._boda.Consultas.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._boda.Actividades.Count; i++)
			{
				ActividadEntity anEntity = this._boda.Actividades[i];
				bool found = false;

				foreach (ActividadView aView in this.Actividades)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Actividades.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Actividades.Count; i++)
			{
				ActividadView aView = this.Actividades[i];

				if (aView.Id == 0)
					this._boda.Actividades.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._boda.Usuarios.Count; i++)
			{
				UsuarioBodaEntity anEntity = this._boda.Usuarios[i];
				bool found = false;

				foreach (UsuarioBodaView aView in this.Usuarios)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Usuarios.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Usuarios.Count; i++)
			{
				UsuarioBodaView aView = this.Usuarios[i];

				if (aView.Id == 0)
					this._boda.Usuarios.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._boda.Invitados.Count; i++)
			{
				InvitadoEntity anEntity = this._boda.Invitados[i];
				bool found = false;

				foreach (InvitadoView aView in this.Invitados)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Invitados.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Invitados.Count; i++)
			{
				InvitadoView aView = this.Invitados[i];

				if (aView.Id == 0)
					this._boda.Invitados.Add(aView.MapToEntity());
			}
			//search for deleted items
			for (int i = 0; i < this._boda.Fotos.Count; i++)
			{
				FotoBodaEntity anEntity = this._boda.Fotos[i];
				bool found = false;

				foreach (FotoBodaView aView in this.Fotos)
				{
					if (anEntity.Id == aView.Id)
					{
						found = true;
						break;
					}
				}

				if (!found)
				{
					this._boda.Fotos.RemoveAt(i);
					i--;
				}
			}

			//search for added items
			for (int i = 0; i < this.Fotos.Count; i++)
			{
				FotoBodaView aView = this.Fotos[i];

				if (aView.Id == 0)
					this._boda.Fotos.Add(aView.MapToEntity());
			}
		}



        #endregion
        
    }
}
